本篇文章會介紹一個特別的設定的寫法,這些設定可以增加使用者體驗
看這個名字就知道他可以攔截所有例外錯誤,當我們在實作後端時,偶爾報錯都可以看到後端的 log 視窗中有一些錯誤發生,我們可以將這些錯誤攔截,讓後端知道報這個錯的時候要怎麼處理(給用戶看)
我們要先從 log 看到錯誤發生時他的錯誤名稱是什麼,以下圖為例,這裡的錯誤名稱就是 IllegalArgumentException
,我們先記好這個錯誤,稍後就把這個錯誤給攔截下來
首先,先建立一個 class ,名稱輸入 GlobalExceptionHandler
接著為他添加一個標籤 @ControllerAdvice
@ControllerAdvice
public class GlobalExceptionHandler {
}
接著使用 @ExceptionHandler
幫剛剛記好的錯誤添加到這裡,將錯誤給攔截
@ExceptionHandler(IllegalArgumentException.class)
最後我們就要來寫這個錯誤攔截時要回覆的訊息
@ExceptionHandler(IllegalArgumentException.class)
public ResponseEntity<String> handleIllegalArgumentException(Exception e){
return ResponseEntity.badRequest().body("輸入參數有缺失 : " + e);
}
就像這樣我們就可以將錯誤攔截,避免回傳錯誤訊息時會什麼都沒顯示,往後有看到什麼錯誤都可以在這個全域的錯誤攔截 class 進行攔截
這個是攔截後的效果